应用层的许多协议都是基于客户服务器方式,即使是P2P对等通信方式,实质上也是一种特殊的客户服务器方式。客户和服务器是通信中所涉及的两个应用进程。

客户是服务请求方,服务器是服务提供方

域名系统DNS

域名系统DNS是互联网使用的命名系统,用来便于人们使用的机器名字转换为IP地址。

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。每一个域名都由标号序列组成,各标号之间用点隔开。

DNS规定,域名中的标号都由英文字母和数字组成:

  • 每一个标号不超过63个字符
  • 不区分大小写字母
  • 由多个标号组成的完整域名总共不超过255个字符

DNS中,一个服务器所负责管辖的(或有权限的)范围叫做,区中的所有节点都能连通,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

区可能等于或小于域,但一定不能大于域。区是域的子集。

image-20201102210523497

image-20201102210551240

根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。

顶级域名服务器(即TLD服务器):负责管理在该顶级域名服务器注册的所有二级域名。

权限域名服务器:负责一个区的域名服务器

本地域名服务器:本地域名服务器并不属于域名服务器层次结构,但它对域名系统非常重要。

为了保证域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其它的都是辅助域名服务器,当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。

域名的解析过程:

  • 主机向本地域名服务器的查询一般都是采用递归查询:如果主机所询问的域名服务器不知道所查询域名的IP,则本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步的查询。递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。(比较少用)
  • 本地域名服务器向根域名服务器的查询通常是采用迭代查询:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个域名服务器查询。

image-20201102212947086

文件传送协议

文件共享协议的两大类:

  • 复制整个文件,特点:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点
  • 联机访问,特点:由操作系统提供对远地共享文件进行访问的服务,如同对本地文件的访问一样

FTP

文件传送协议FTP提供文件传送的一些基本服务,使用TCP可靠的传输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP使用客户服务器方式。一个FTP服务器进程可以同时为多个客户提供服务。FTP的服务器进程由两大部分组成:

  • 一个主进程,负责接受新的请求
  • 若干个从属进程,负责处理单个请求

主进程的工作步骤:

  1. 打开熟知端口(端口号为21),使客户进程能够连接上
  2. 等待客户进程发出连接请求
  3. 启动从属进程处理客户进程发来的请求
  4. 回到等待状态,继续接受其它客户进程发来的请求。主进程和从属进程的处理是并发进行的。

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:

  • 控制连接:会话期间一直保持打开,FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程(服务器端口号21)
  • 数据连接:实际用于传输文件(服务器端口号20)

image-20201102214836130

网络文件系统NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据,在网络上传送的只是少量的修改数据。

TFTP

TCP/IP协议族中还有一个简单文件传送系统TFTP,使用客户服务器方式,但使用UDP数据报,因此TFTP需要有自己的差错改正措施。TFTP只支持文件传输而不支持交互。

TFTP的优点:

  • TFTP可用于UDP环境
  • TFTP代码所占的内存较小

TFTP的主要特点:

  • 每次传输的数据报中有512字节的数据,但最后一次可以不足512字节
  • 数据报文按序编号,从1开始
  • 支持ASCII码或二进制传送
  • 可对文件进行读或写
  • 使用很简单的首部

TFTP的工作很像停止等待协议,每发送完一个文件块后就等待对方的确认,确认时应指明所确认的快编号。发完数据后规定时间内收不到确认就要重发数据PDU,发送确认后规定时间内收不到下一个文件块就要重发确认PDU。

TFTP服务器进程的熟知端口号为69。

远程终端协议TELNET

TELNET是一个简单的远程终端协议,又称终端仿真协议,使用客户服务器方式。

TELNET为了能够适应许多计算机和操作系统的差异,使用网络虚拟终端NVT格式传送数据和命令。

image-20201103103410453

万维网www

万维网是一个大规模的、联机式的信息储藏所,简称Web。

万维网是一个分布式的超媒体系统,它是超文本系统的扩充。超文本文档仅包含文本信息,而超媒体文档还包含其它表示方式的信息,如图形、图像、声音、动画以及视频画像等。

万维网以客户服务器方式工作,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。

万维网的内核部分由三个标准构成:

  • 统一资源定位符(URL)
  • 超文本传输协议(HTTP)
  • 超文本标记语言(HTML)

统一资源定位符(URL)是用来表示从互联网上得到的资源位置和访问这些资源的方法。互联网上的所有资源,都有一个唯一确定的URL。

URL的一般形式:<协议>://<主机>:<端口>/<路径>

URL的协议和主机部分,字母不分大小写,但路径有时要区分大小写。

HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。

image-20201103111559184

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP协议本身是无连接的。HTTP协议是无状态的。

image-20201103111841313

当建立TCP连接的三报文握手的前两部分完成后,万维网客户就把HTTP请求报文作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。

非持续连接:HTTP/1.0,主要缺点是每请求一个文档就要有两倍RTT的开销。

持续连接:HTTP/1.1,万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。

HTTP/1.1协议的持续连接有两种工作方式:

  • 非流水线方式:客户在收到前一个响应后才能发出下一个请求,每访问一次对象都需要花费一个RTT时间
  • 流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文,客户访问所有的对象只需花费一个RTT时间

代理服务器是一种网络实体,又称为万维网高速缓存。代理服务器把最近的一些请求和响应存放在本地磁盘中,当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,则返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。

image-20201103211702245

HTTP有两类报文:

  • 请求报文——从客户向服务器发送请求报文
  • 响应报文——从服务器到客户的回答

image-20201103211803360

由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。

HTTP的请求报文和响应报文都是由三部分组成的,区别就是开始行不同:

  • 开始行:区分请求报文和响应报文

    • 方法:对所请求的对象进行的操作,实际上是一些命令

      image-20201103212259005

    • 请求资源的URL

    • HTTP版本

  • 首部行:用来说明浏览器、服务器或报文主体的一些信息

  • 实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没用这个字段

HTTP是无状态的,但是万维网站点可以使用Cookie来跟踪用户,Cookie表示在HTTP服务器和客户之间传递的状态信息。

电子邮件

电子邮件的两个最重要的标准是:

  • 简单邮件传送协议SMTP
  • 互联网文本报文格式

由于SMTP只能传送可打印的7位ASCII码邮件,又提出了通用互联网邮件扩充MIME

一个电子邮件系统有三个主要组成构件:

  • 用户代理UA:用户与电子邮箱系统的接口,又称为电子邮件客户端软件
  • 邮件服务器
  • 邮件发送协议和邮件读取协议
    • 发送协议SMTP:SMTP客户把邮件”推“给SMTP服务器
    • 读取协议:
      • POP3
      • IMAP

image-20201104000953440

邮件服务器必须能够同时充当客户和服务器。

SMTP和POP3(或IMAP)都是使用TCP连接来传送邮件的,使用TCP的目的是为了可靠地传送邮件。

图6-17中的邮件服务器程序就在发送方和接收方的计算机中运行,那么可以直接把邮件发送到收件人的计算机中?

不行。因为并非所有的计算机都能够运行邮件服务器程序,更重要的是邮件服务器必须不间断地运行,否则就可能使很多外面发来的邮件无法接收。

电子邮件的组成:

  • 信封

  • 内容

    • 首部:RFC 5322文档规定,包括一些关键字,后面加上冒号

      最重要的关键字:

      • To:一个或多个收件人的电子邮件地址
      • Subject:邮件的主题
    • 主题:用户自由撰写

简单邮件传送协议SMTP

SMTP使用客户服务器方式,负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的SMTP进程就是SMTP服务器。

SMTP通信的三个阶段:

  • 连接建立:发件人的邮件发送到发送方邮件服务器的邮件缓存,SMTP客户每隔一定时间对邮件缓存扫描一次,如果发现有邮件,就使用SMTP的熟知端口号码25与接收邮件服务器的SMTP服务器建立TCP连接。

    SMTP不使用中间的邮件服务器

  • 邮件发送:SMTP使用TCP连接试图使邮件的传送可靠

  • 连接释放

邮件读取协议

常用的邮件读取协议有两个:

  • 邮件协议第3版POP3

    • 使用客户服务器方式
    • 只有在用户输入鉴别信息(用户名和口令)后,才允许对邮箱进行读取
    • 只要用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除
  • 网际报文存取协议IMAP

    • 使用客户服务器方式,较新版本是IMAP4
    • 用户在自己的计算机上就可以操纵邮件服务器的邮箱,就像在本地操纵一样,因此IMAP是一个联机协议
    • 当用户需要打开某个邮件,则该邮件才会传到用户的计算机上
    • 用户可以为自己的邮箱创建分类管理的层次式的邮箱文件夹,并将邮件在文件夹之间移动
    • 用户未发出删除邮件的命令之前,IMAP服务器邮箱中的邮件一直保存着
    • IMAP允许收件人只读取邮件的某个部分
    • 缺点:如果用户没有将邮件复制到自己的计算机上,则想查阅IMAP服务器上的邮件时,必须联网

    image-20201104154538526

通用互联网邮件扩充MIME

SMTP有以下缺点:

  • SMTP不能传送可执行文件或其他的二进制对象
  • SMTP限于传送7位的ASCII码
  • SMTP服务器会拒绝超过一定长度的邮件
  • 某些SMTP的实现并没有完全按照SMTP的互联网标准,常见的问题如下:
    • 回车、换行的删除和增加
    • 超过76个字符时的处理:截断或自动换行
    • 后面多余空格的删除
    • 将制表符tab转换为若干个空格

通用互联网邮件扩充MIME的意图是继续使用原来的邮件格式,但增加了邮件主题的结构,并定义了传送非ASCII码的编码规则。

image-20201104155952415

MIME主要包括三部分内容:

  • 5个新的邮件首部字段,提供了有关邮件主体的信息
    • MIME-Version:标志MIME的版本
    • Content-Description:可读字符串,说明邮件主题是否是图像、音频或视频
    • Content-Id:邮件的唯一标识符
    • Content-Transfer-Encoding:在传送时邮件的主体是如何编码的
    • Content-Type:说明邮件主体的数据类型和子类型,中间用“/”分开
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

三种常用的内容传送编码

  • 7位ASCII码:每行不能超过1000个字符,MIME对这种ASCII码构成的邮件主体不进行任何转换

  • quoted-printable编码:适用于所传送的数据中只有少量的非ASCII码,如汉字。

    编码方法:

    • 对所有可打印的ASCII码(等号“=”除外):不改变

    • 对等号“=”和不可打印的ASCII码以及非ASCII码的数据:每个字节的二进制代码用两个十六进制的数字表示,然后在前面加上一个等号“=”

  • base64编码:适用于任意的二进制文件,这种编码将二进制代码划分成一个个24位长的单元

    image-20201104160805907